#include <bits/stdc++.h>

using namespace std;
int s;

// 思路
// 第n个盘子在最下面。定义如下（原位置，经过位置，目的位置）
//  该函数作用：从a经过b移动到c
// 1.如果只有一个盘子，则直接从a移动到c
// 2.如果有n个盘子，则将n前面的所有盘子先从a经过c移动到b
// 3.将第n个盘子从a经过b移动到c
// 4.将n前面的所有盘子从b经过a移动到c，完成所有的移动
void f(int n,char a,char b,char c) {
    if(n == 1) {
        printf("%c->%d->%c\n",a,n,c);
        return;
    }
    f(n-1,a,c,b);
    printf("%c->%d->%c\n",a,n,c);
    f(n-1,b,a,c);
}

int main() {
    char a,b,c;
    cin >> s >> a >> b >> c;
    f(s,a,c,b);
}